<template>
    <div class="rich-text-editor">
      <quill-editor
        v-model="content"
        :options="editorOptions"
        @blur="onEditorBlur($event)"
        @focus="onEditorFocus($event)"
        @ready="onEditorReady($event)"
      />
    </div>
  </template>
  
  <script>
  import { quillEditor } from 'vue-quill-editor'
  
  export default {
    name: 'RichTextEditor',
    components: {
      quillEditor
    },
    props: {
      value: {
        type: String,
        default: ''
      }
    },
    data() {
      return {
        content: this.value,
        editorOptions: {
          modules: {
            toolbar: [
              ['bold', 'italic', 'underline', 'strike'],        // 加粗、斜体、下划线、删除线
              ['blockquote', 'code-block'],                     // 引用、代码块
  
              [{ 'header': 1 }, { 'header': 2 }],               // 标题1、标题2
              [{ 'list': 'ordered'}, { 'list': 'bullet' }],     // 有序列表、无序列表
              [{ 'script': 'sub'}, { 'script': 'super' }],      // 下标、上标
              [{ 'indent': '-1'}, { 'indent': '+1' }],          // 缩进
              [{ 'direction': 'rtl' }],                         // 文本方向
  
              [{ 'size': ['small', false, 'large', 'huge'] }],  // 字体大小
              [{ 'header': [1, 2, 3, 4, 5, 6, false] }],        // 标题级别
  
              [{ 'color': [] }, { 'background': [] }],          // 字体颜色、背景颜色
              [{ 'font': [] }],                                 // 字体
              [{ 'align': [] }],                                // 对齐方式
  
              ['clean'],                                        // 清除格式
              ['link', 'image', 'video']                        // 链接、图片、视频
            ]
          },
          theme: 'snow' // 主题样式，可选 'snow' 或 'bubble'
        }
      }
    },
    watch: {
      value(newVal) {
        this.content = newVal
      },
      content(newVal) {
        this.$emit('input', newVal)
      }
    },
    methods: {
      onEditorBlur(quill) {
        console.log('editor blur!', quill)
      },
      onEditorFocus(quill) {
        console.log('editor focus!', quill)
      },
      onEditorReady(quill) {
        console.log('editor ready!', quill)
      }
    }
  }
  </script>
  
  <style scoped>
  .rich-text-editor {
    height: 400px;
  }
  </style>